package exception02;

/*
手动处理异常
   格式：
      try{//检测可能出啊先异常的代码
         //一般写可能出现异常的代码

      }catch(异常类型 变量名){//捕获异常对象
                            //catch中异常类型定义为try中可能出现的异常类型
        //处理异常的代码
      }catch(异常类型2 变量名){  //不同的异常要找对应的catch处理，相当于对症下药

      }....后面可以写多个catch块

 */
public class ExceptionDemo05 {
    public static void main(String[] args) {
        int[] arr = new int[3];

        try {
            int i = method(null, 2);
            System.out.println(i);

            int j = method(arr, 5);
            System.out.println(j); //0

        } catch (NullPointerException e) {      //NullPointerException e 只能接收空指针异常，不能接收数组索引越界
            System.out.println("捕获空指针异常");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("捕获数组索引越界异常");
        }
        System.out.println("程序执行结束");

    }

    public static int method(int[] arr, int index) {
        if (arr == null) {
            throw new NullPointerException("arr的值不能为null");
        }
        if (arr == null) {
            //return -1;
            throw new NullPointerException("arr的值不能为null");
            //throw new String("abc");
        }
        return arr[index];
    }
}
